package io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * date: 2023-2-22
 * 使用字节流：读取文件
 */
public class IODemo6 {
    public static void main(String[] args) throws IOException {
        // 创建 InputStream 对象的时候，使用绝对路径或者相对路径，都是可以的，也可以使用 File 对象
        InputStream inputStream = new FileInputStream("d:/test/test.txt");

        // 进行读操作
        /*while (true) {
            int b = inputStream.read(); // read()无参数版本：一次读取一个字节
            if(b == -1) {
                // 读取完毕
                break;
            }
            System.out.println("" + (byte)b);
        }*/

        while (true) {
            byte[] buffer = new byte[1024];
            /*  一次读取多个字节
                read的一个参数版本：需要调用者提前准备一个数组。这里的参数指的是 输出型参数
                这里的传参操作相当于是把刚才准备好的数组，交给 read方法，让 read方法 内部针对这个数组进行填写
             */
            int len = inputStream.read(buffer);
            System.out.println("len: "+len);
            if(len == -1) {
                break;
            }
            // 此时读取的结果就被放到了 byte 数组中
            for (int i = 0; i < len; i++) {
                System.out.printf("%x\n",buffer[i]);
            }
        }

        inputStream.close();
    }
}
